const { body, validationResult } = require('express-validator');

// 验证结果处理中间件
exports.validate = (req, res, next) => {
  const errors = validationResult(req);
  if (!errors.isEmpty()) {
    return res.status(400).json({ errors: errors.array() });
  }
  next();
};

// 用户注册验证规则
exports.registerRules = [
  body('username').notEmpty().withMessage('用户名不能为空'),
  body('email').isEmail().withMessage('请输入有效的邮箱'),
  body('password').isLength({ min: 6 }).withMessage('密码至少需要6个字符'),
  body('role').isIn(['job_seeker', 'company', 'admin']).withMessage('角色必须是job_seeker、company或admin')
];

// 用户登录验证规则
exports.loginRules = [
  body('email').isEmail().withMessage('请输入有效的邮箱'),
  body('password').notEmpty().withMessage('密码不能为空')
];

// 职位创建验证规则
exports.jobRules = [
  body('title').notEmpty().withMessage('职位标题不能为空'),
  body('industry').notEmpty().withMessage('行业不能为空'),
  body('location').notEmpty().withMessage('工作地点不能为空'),
  body('salaryRange').notEmpty().withMessage('薪资范围不能为空'),
  body('experience').notEmpty().withMessage('工作经验要求不能为空'),
  body('education').notEmpty().withMessage('学历要求不能为空'),
  body('description').notEmpty().withMessage('职位描述不能为空'),
  body('requirements').notEmpty().withMessage('任职要求不能为空')
];

// 简历创建验证规则
exports.resumeRules = [
  body('name').notEmpty().withMessage('姓名不能为空'),
  body('phone').notEmpty().withMessage('电话不能为空'),
  body('email').isEmail().withMessage('请输入有效的邮箱'),
  body('highestEducation').notEmpty().withMessage('最高学历不能为空'),
  body('workExperience').isArray().withMessage('工作经验必须是数组')
];

// 公司信息验证规则
exports.companyRules = [
  body('name').notEmpty().withMessage('公司名称不能为空'),
  body('industry').notEmpty().withMessage('行业不能为空'),
  body('scale').isIn(['少于50人', '50-100人', '100-500人', '500-1000人', '1000人以上']).withMessage('公司规模选择不正确'),
  body('contactEmail').isEmail().withMessage('请输入有效的联系邮箱'),
  body('contactPhone').notEmpty().withMessage('联系电话不能为空')
];